草庐IT

c++ - C++ 中复杂的 Typedef

全部标签

c++ - 决策、复杂条件和规划易于维护

我正在尝试找到一种优雅的方式来实现易于维护的决策算法,因为决策的条件可能经常变化。我将尝试更具体地举一个例子:假设我正在尝试管理一家餐厅厨房的cooking厨师团队。每个厨师都知道如何cooking3种馅饼:苹果馅饼、南瓜馅饼和覆盆子馅饼以及2种披萨:奶酪披萨和培根披萨。他们都知道如何cooking一切。现在,我想向这些主管发送关于客户即将到来的事情的命令。条件是:一个酋长一次只能做一个馅饼。例如,如果我命令厨师做一个苹果派,我不能命令他做覆盆子派或南瓜派,除非苹果派做好了或者我发送了取消苹果派的请求。我可以让厨师一次最多煮5个比萨饼,因为它是为不同的客户准备的。我想创建一个算法,返回

c++ - 了解空继承类的未使用 typedef

我只是想了解我正在阅读的一些教程代码。我正在尝试学习一些Dx11代码,我正在学习的教程中包含设计为事件详细信息的类,以便在事件发生时传递给函数,例如鼠标按钮被按下。有一个空的基类EventArgs定义如下:classEventArgs{public:EventArgs(){};}这是由其他事件类继承的。因此,例如,他们有一个按键事件参数类,如下所示:classKeyEventArgs:publicEventArgs{public:typedefEventArgsbase;KeyEventArgs(/**/){}//Restoftheclass}我理解所有事件都继承一个基础来表示“它们是

c++ - Typedef、Ruby 和 SWIG

我正在尝试为某些C++类生成Ruby包装器。生成成功,所有的方法都创建了,但是问题是很多C++的方法都是这样用的:#ifdefUSE_LONGLONG_COUNTStypedefunsignedlonglongCount;/*acountofsomething*/#elsetypedefunsignedlongCount;/*acountofsomething*/#endif当我在irb中运行一个返回计数的方法时,我得到如下信息:irb(main):006:0>ngram.numNgrams(0)=>#我期待一个数字...我尝试使用反射来查看我是否能以某种方式获得该值,但没有雪茄。有什

c++ - 如何简单地序列化复杂结构并在 Qt 中通过网络发送它们

我正在创建一个客户端服务器应用程序,现在我正在处理一种最简单的方法来序列化一些类,交付给另一端,然后放回我以后可以使用的类。我意识到这并不简单,有些人可能会说用C或C++等低级语言是不可能的,但实际上可以通过大量编码实现。我想知道是否其他人已经没有为此创建一个解决方案,它是可移植的并且可以工作,所以我不需要重新发明轮子。目前我的解决方案(可能有点太复杂):每个要序列化和反序列化的类都继承自抽象类Serializable,它包含两个函数:QHashToHash();voidLoadHash(QHashhash);第一个函数创建一个包含所有公共(public)和私有(private)变量的

c++ - 具有多个输出的 Typedef

我刚刚发现以下是有效的C++typedefconstchar*PSTR,*LPSTR;我的问题是:PSTR和LPSTR是同一个别名吗?为什么我把它改成typedefconstchar*PSTR,LPSTR;我知道LPSTR是一个字符?? 最佳答案 这就是为什么我总是将*贴在名称上而不是类型上。当你输入时typedefconstchar*PSTR;你必须读到*PSTR是一个constchar,所以PSTR是一个constchar的地址>.所以如果你输入typedefconstchar*PSTR,*LPSTR,OTHER;OTHER和*

c++ - 带有自定义删除器的 std::shared_ptr 的 Typedef 别名

我想为std::shared_ptr创建别名使用自定义删除器。此代码有效,但仅适用于唯一指针。我收到有关标有[1]的行的无效模板参数数量的错误。我注意到std::unique_ptr的模板和ctor参数和std::shared_ptr与所列不同here和here我注意到这个问题可能与this重复,但我不知道如何解决我的问题#include#includetemplatestructDeleter{voidoperator()(T*p)constnoexcept{p->Drop();//SFINAE};};templateusingmy_unique_ptr=std::unique_pt

c++ - 如何使 exuberant-ctags 解析 "using"样式的 typedef?

如何让ctags解析using类型别名,如下所示?usingFooPtr=std::shared_ptr;它只选取那些用typedef声明的。 最佳答案 从Exuberant-ctags派生的Universal-ctags(https://ctags.io)在C++源文件中处理“使用”:[jet@localhost]/tmp%cat/tmp/foo.cppusingFooPtr=std::shared_ptr;[jet@localhost]/tmp%u-ctags-o-/tmp/foo.cppFooPtr/tmp/foo.cpp/^

c++ - 如何隐藏 range-v3 的复杂范围类型?

我需要一个类,该类的方法可以使用range-v3库返回某种范围。为了实现这样一个类,我可以在该类的定义中正确地编写它的所有内容。例如:#include#include#includeclassAlpha{public:intx;};classBeta:publicAlpha{};classFoo{public:std::sets;autor(){returns|ranges::v3::view::transform([](Alpha*a){returnstatic_cast(a);})}};但是,在我的真实案例中,Foo::r函数非常复杂,我想隐藏它的实现。特别是,实现使用了一些额外的

c++ - map 复杂查找操作

我想做以下事情:定义字符串和任何类型的对象(可以是列表、整数-任何对象)之间的映射。map的键可以如下所示(值同样不重要):"AAA/123"==>1"AAA/"==>2"BBB/"==>3"CCC/*"==>4"CCC/123"==>5现在,诀窍是我想在给定以下字符串的情况下找到正确的值:"AAA/123"应该给1。“AAA/111”应该给2。“CCC/111”应该给4。“CCC/123”应该给5。“BBB/AAA/123”应该给3。知道我如何使用C++和可能的STL/boost做到这一点吗? 最佳答案 这是litb答案的一个变体

c++ - 从哪里获得自定义 Visual Studio 2008 语法突出显示(复杂的)

好吧,我曾经看到过更多的语法高亮显示,而默认的语法高亮显示在VS2008中真的很有限,所以我在想,是否有这样的高亮显示:定义的变量会有自己的颜色。定义的函数会有自己的颜色。预定义函数会有自己的颜色(来自库等,可能会有自己的列表)。常量/枚举有自己的颜色。typedefs/defs会有自己的颜色。字符串(引号之间的东西)会有自己的颜色。floats/double的颜色会有所不同(会检查1.0f或1.0等)因为这太棒了,我以前没有在任何语法高亮系统中见过1,2,4,5,如果有这样的系统就好了。这会大大加快编程速度,因为如果我犯了错误,我会在编译前立即看到它。我看了一些MSDN网站,做起来非